package com.gulimall.cart.thread;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @Author LiDeJie
 * @Create 2024/1/21 13:41
 * @Version 1.0
 */
public class CartThreadPoolExecutor {
    
    public static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 10, 5, TimeUnit.MINUTES, new ArrayBlockingQueue<>(50), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
    
    public static void main(String[] args) {
        //使用线程池需要注意的问题：通过线程池调用线程的方式比较稳定，线程不够了先进入阻塞队列
        //但是，在业务复杂情况下，一个异步任务的调用可能会用到上一个异步任务执行的结果
        //面试：
        //一个线程池 core 7； max 20 ，queue：50，100 并发进来怎么分配的；
        //执行流程：先拿到核心线程数7个去执行任务，然后进入阻塞队列，
        // 然后开启新的线程13个去执行任务，其他50个进入阻塞队列中，剩余30个走拒绝策略
        
    
    }
}
